/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import clases.Direccion;
import negocio.Trabajador;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author p11
 */
public class TrabajadorDAO {
    
    public TrabajadorDAO(){};
    
    /*
     * Descripción: regresa un trabajador que coincide con el curp
     * Retorno: Objeto Trabajador. NUll si no encontro niguna coincidencia.
     * Autor: Francisco Javier Ponce Cruz     
     */
    public Trabajador buscarTrabajador(String curp)
    {
        conexionDAO cbd = new conexionDAO();
        cbd.abrirConexion();    
        String query;
       
            query = "SELECT CURP,t.nombre,apPaterno,apMaterno,fechaNacimiento,telefono,email,calle,noExterior,noInterior,delegacion,cp,t.idDireccion,d.idDireccion,t.idTipo,x.nombre,x.idTipo,x.sueldo,x.HoraLlegada,x.Turno,x.HoraTrabajo"+
                    " FROM trabajador t,direccion d, tipoTrabajador x"+
                    " WHERE CURP='"+curp+"' AND t.idDireccion = d.idDireccion AND x.idTipo = t.idTipo";
        
        Trabajador trabajador = new Trabajador();
        try {
            ResultSet rs = cbd.consulta(query);
           if(rs.next()){
               trabajador.setCurp(rs.getString("CURP"));
                trabajador.setNombre(rs.getString("nombre"));
                trabajador.setApPaterno(rs.getString("apPaterno"));
                trabajador.setApMaterno(rs.getString("apMaterno"));
                trabajador.setFechaNacimiento(rs.getDate("fechaNacimiento"));
                trabajador.setTelefono(rs.getString("telefono"));
                trabajador.setNombreTipo(rs.getInt("idTipo"));
                trabajador.setEmail("email");

                //Crea la direccion
                Direccion dir = new Direccion();
                dir.setCalle(rs.getString("calle"));
                dir.setNoExterior(rs.getString("noExterior"));
                dir.setNoInterior(rs.getInt("noInterior"));
                dir.setDelegacion(rs.getString("delegacion"));
                dir.setCp(rs.getInt("cp"));
                trabajador.setDireccion(dir);           
                
                //Datos de trabajador
                trabajador.setNombreTipo(rs.getString("x.nombre"));
                trabajador.setSueldo(rs.getDouble("sueldo"));
                trabajador.setHorasTrabajo(8);
                trabajador.setLlegada(new Time(12));
                trabajador.setTurno(rs.getString("x.Turno").charAt(0));   
                return trabajador;
          }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
       return null;
                
   }
    
            
             
    public Trabajador[] obtenerTrabajadores(){
       try{
        conexionDAO baseDatos = new conexionDAO();
            if(baseDatos.abrirConexion())
            {

                ResultSet rs = baseDatos.consulta(

                "SELECT CURP, Trabajador.nombre, apPaterno, apMaterno,telefono,email, TipoTrabajador.Nombre, Trabajador.idTipo "+
                "FROM Trabajador, TipoTrabajador "+
                "WHERE Trabajador.idTipo = TipoTrabajador.idTipo "+
                "ORDER BY apPaterno "
                );

                int contador = 0;
                    while (rs.next()) {
                        contador++;
                    }
                rs.first();
                
                Trabajador vectorTrabajador[] = new Trabajador[contador];    
                contador = 0;
                while(rs.next())
                    {
                        Trabajador tr = new Trabajador();
                        tr.setNombre(rs.getString("nombre"));
                        tr.setApPaterno(rs.getString("apPaterno"));
                        tr.setApMaterno(rs.getString("apMaterno"));
                         tr.setCurp(rs.getString("CURP"));
                         tr.setTelefono(rs.getString("telefono"));
                         tr.setEmail(rs.getString("email"));
                        tr.setTipo(rs.getInt("idTipo"));
                        tr.setNombreTipo(rs.getString("TipoTrabajador.Nombre"));
                        vectorTrabajador[contador] = tr;
                        contador++;
                    }
                baseDatos.cerrarConexion();
                return vectorTrabajador;
            }
            } catch (SQLException ex) {
                Logger.getLogger(TrabajadorDAO.class.getName()).log(Level.SEVERE, null, ex);
                System.out.print(ex.getMessage());
            }
        return null;
    }
    
    
  
}
